Skip to content

Commit 6d05b07

Browse files
committed
Refactor according to PR comments to remove allocations.
1 parent 160a7b0 commit 6d05b07

File tree

1 file changed

+11
-17
lines changed

1 file changed

+11
-17
lines changed

crates/ide/src/annotations.rs

+11-17
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use ide_db::{
55
helpers::visit_file_defs,
66
RootDatabase,
77
};
8-
use syntax::{ast::HasName, AstNode, TextRange, TextSize};
8+
use syntax::{ast::HasName, AstNode, TextRange};
99

1010
use crate::{
1111
fn_references::find_all_methods,
@@ -66,10 +66,10 @@ pub(crate) fn annotations(
6666
Either::Left(def) => {
6767
let (range, ranges_enum_variants) = match def {
6868
hir::ModuleDef::Const(konst) => {
69-
(konst.source(db).and_then(|node| name_range(&node, file_id)), vec![None])
69+
(konst.source(db).and_then(|node| name_range(&node, file_id)), vec![])
7070
}
7171
hir::ModuleDef::Trait(trait_) => {
72-
(trait_.source(db).and_then(|node| name_range(&node, file_id)), vec![None])
72+
(trait_.source(db).and_then(|node| name_range(&node, file_id)), vec![])
7373
}
7474
hir::ModuleDef::Adt(adt) => match adt {
7575
hir::Adt::Enum(enum_) => (
@@ -83,12 +83,12 @@ pub(crate) fn annotations(
8383
})
8484
.collect()
8585
} else {
86-
vec![None]
86+
vec![]
8787
},
8888
),
89-
_ => (adt.source(db).and_then(|node| name_range(&node, file_id)), vec![None]),
89+
_ => (adt.source(db).and_then(|node| name_range(&node, file_id)), vec![]),
9090
},
91-
_ => (None, vec![None]),
91+
_ => (None, vec![]),
9292
};
9393

9494
let (range, offset) = match range {
@@ -116,19 +116,13 @@ pub(crate) fn annotations(
116116
}
117117

118118
if config.annotate_enum_variant_references {
119-
let mut enum_variants_metadata: Vec<(TextRange, TextSize)> = Vec::with_capacity(ranges_enum_variants.len());
120-
for range_enum_variant in ranges_enum_variants.into_iter() {
121-
let (range, offset) = match range_enum_variant {
122-
Some(range) => (range, range.start()),
123-
None => return,
124-
};
125-
enum_variants_metadata.push((range, offset))
126-
}
127-
for enum_variant_metadata in enum_variants_metadata.into_iter() {
119+
for range_enum_variant in
120+
ranges_enum_variants.into_iter().filter_map(std::convert::identity)
121+
{
128122
annotations.push(Annotation {
129-
range: enum_variant_metadata.0,
123+
range: range_enum_variant,
130124
kind: AnnotationKind::HasReferences {
131-
position: FilePosition { file_id, offset: enum_variant_metadata.1 },
125+
position: FilePosition { file_id, offset: range_enum_variant.start() },
132126
data: None,
133127
},
134128
});

0 commit comments

Comments
 (0)