Skip to content

Commit e8bb59b

Browse files
committed
minor: Option-box crate_lang_items query result
1 parent 9c9c245 commit e8bb59b

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

src/tools/rust-analyzer/crates/hir-def/src/lang_item.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ impl_from!(
3131
);
3232

3333
/// Salsa query. This will look for lang items in a specific crate.
34-
#[salsa_macros::tracked(returns(ref))]
35-
pub fn crate_lang_items(db: &dyn DefDatabase, krate: Crate) -> LangItems {
34+
#[salsa_macros::tracked(returns(as_deref))]
35+
pub fn crate_lang_items(db: &dyn DefDatabase, krate: Crate) -> Option<Box<LangItems>> {
3636
let _p = tracing::info_span!("crate_lang_items_query").entered();
3737

3838
let mut lang_items = LangItems::default();
@@ -93,7 +93,7 @@ pub fn crate_lang_items(db: &dyn DefDatabase, krate: Crate) -> LangItems {
9393
}
9494
}
9595

96-
lang_items
96+
if lang_items.is_empty() { None } else { Some(Box::new(lang_items)) }
9797
}
9898

9999
/// Salsa query. Look for a lang items, starting from the specified crate and recursively
@@ -102,7 +102,7 @@ pub fn crate_lang_items(db: &dyn DefDatabase, krate: Crate) -> LangItems {
102102
pub fn lang_items(db: &dyn DefDatabase, start_crate: Crate) -> LangItems {
103103
let _p = tracing::info_span!("lang_items_query").entered();
104104

105-
let mut result = crate_lang_items(db, start_crate).clone();
105+
let mut result = crate_lang_items(db, start_crate).cloned().unwrap_or_default();
106106

107107
// Our `CrateGraph` eagerly inserts sysroot dependencies like `core` or `std` into dependencies
108108
// even if the target crate has `#![no_std]`, `#![no_core]` or shadowed sysroot dependencies
@@ -173,6 +173,10 @@ macro_rules! language_item_table {
173173
}
174174

175175
impl LangItems {
176+
fn is_empty(&self) -> bool {
177+
$( self.$lang_item.is_none() )&&*
178+
}
179+
176180
/// Merges `self` with `other`, with preference to `self` items.
177181
fn merge_prefer_self(&mut self, other: &Self) {
178182
$( self.$lang_item = self.$lang_item.or(other.$lang_item); )*

0 commit comments

Comments
 (0)