Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/hir-def/src/lib.rs2
-rw-r--r--crates/hir-def/src/signatures.rs9
-rw-r--r--crates/hir/src/lib.rs26
3 files changed, 18 insertions, 19 deletions
diff --git a/crates/hir-def/src/lib.rs b/crates/hir-def/src/lib.rs
index bf265cd42e..7b7d046581 100644
--- a/crates/hir-def/src/lib.rs
+++ b/crates/hir-def/src/lib.rs
@@ -298,7 +298,7 @@ impl EnumId {
pub fn enum_variants_with_diagnostics(
self,
db: &dyn DefDatabase,
- ) -> &(EnumVariants, Option<ThinVec<InactiveEnumVariantCode>>) {
+ ) -> &(EnumVariants, ThinVec<InactiveEnumVariantCode>) {
EnumVariants::of(db, self)
}
}
diff --git a/crates/hir-def/src/signatures.rs b/crates/hir-def/src/signatures.rs
index 463fc9ceff..e9307a1255 100644
--- a/crates/hir-def/src/signatures.rs
+++ b/crates/hir-def/src/signatures.rs
@@ -1,6 +1,6 @@
//! Item signature IR definitions
-use std::{cell::LazyCell, ops::Not as _};
+use std::cell::LazyCell;
use bitflags::bitflags;
use cfg::{CfgExpr, CfgOptions};
@@ -1065,7 +1065,7 @@ impl EnumVariants {
pub(crate) fn of(
db: &dyn DefDatabase,
e: EnumId,
- ) -> (EnumVariants, Option<ThinVec<InactiveEnumVariantCode>>) {
+ ) -> (EnumVariants, ThinVec<InactiveEnumVariantCode>) {
let loc = e.lookup(db);
let source = loc.source(db);
let ast_id_map = db.ast_id_map(source.file_id);
@@ -1073,7 +1073,7 @@ impl EnumVariants {
let mut diagnostics = ThinVec::new();
let cfg_options = loc.container.krate(db).cfg_options(db);
let Some(variants) = source.value.variant_list() else {
- return (EnumVariants { variants: FxIndexMap::default() }, None);
+ return (EnumVariants { variants: FxIndexMap::default() }, ThinVec::new());
};
let mut variants = variants
.variants()
@@ -1103,8 +1103,9 @@ impl EnumVariants {
})
.collect::<FxIndexMap<_, _>>();
variants.shrink_to_fit();
+ diagnostics.shrink_to_fit();
- (EnumVariants { variants }, diagnostics.is_empty().not().then_some(diagnostics))
+ (EnumVariants { variants }, diagnostics)
}
}
diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs
index 633fe1f86b..f9d28ea3b4 100644
--- a/crates/hir/src/lib.rs
+++ b/crates/hir/src/lib.rs
@@ -781,20 +781,18 @@ impl Module {
let (variants, diagnostics) = e.id.enum_variants_with_diagnostics(db);
let file = e.id.lookup(db).id.file_id;
let ast_id_map = db.ast_id_map(file);
- if let Some(diagnostics) = &diagnostics {
- for diag in diagnostics.iter() {
- acc.push(
- InactiveCode {
- node: InFile::new(
- file,
- ast_id_map.get(diag.ast_id).syntax_node_ptr(),
- ),
- cfg: diag.cfg.clone(),
- opts: diag.opts.clone(),
- }
- .into(),
- );
- }
+ for diag in diagnostics {
+ acc.push(
+ InactiveCode {
+ node: InFile::new(
+ file,
+ ast_id_map.get(diag.ast_id).syntax_node_ptr(),
+ ),
+ cfg: diag.cfg.clone(),
+ opts: diag.opts.clone(),
+ }
+ .into(),
+ );
}
for &(v, _) in variants.variants.values() {
let source_map = &v.fields_with_source_map(db).1;