Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/item_tree/lower.rs')
| -rw-r--r-- | crates/hir-def/src/item_tree/lower.rs | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/crates/hir-def/src/item_tree/lower.rs b/crates/hir-def/src/item_tree/lower.rs index 31e409d86e..91c2e60fd7 100644 --- a/crates/hir-def/src/item_tree/lower.rs +++ b/crates/hir-def/src/item_tree/lower.rs @@ -4,12 +4,7 @@ use std::cell::OnceCell; use base_db::{Crate, FxIndexSet}; use cfg::CfgOptions; -use hir_expand::{ - HirFileId, - mod_path::PathKind, - name::AsName, - span_map::{SpanMap, SpanMapRef}, -}; +use hir_expand::{HirFileId, mod_path::PathKind, name::AsName, span_map::SpanMap}; use la_arena::Arena; use span::{AstIdMap, FileAstId, SyntaxContext}; use syntax::{ @@ -32,7 +27,7 @@ pub(super) struct Ctx<'db> { pub(super) db: &'db dyn DefDatabase, tree: ItemTree, source_ast_id_map: &'db AstIdMap, - span_map: OnceCell<SpanMap>, + span_map: OnceCell<SpanMap<'db>>, file: HirFileId, cfg_options: OnceCell<&'db CfgOptions>, krate: Crate, @@ -60,12 +55,12 @@ impl<'db> Ctx<'db> { self.cfg_options.get_or_init(|| self.krate.cfg_options(self.db)) } - pub(super) fn span_map(&self) -> SpanMapRef<'_> { - self.span_map.get_or_init(|| self.db.span_map(self.file)).as_ref() + pub(super) fn span_map(&self) -> SpanMap<'_> { + *self.span_map.get_or_init(|| self.db.span_map(self.file)) } pub(super) fn lower_module_items(mut self, item_owner: &dyn HasModuleItem) -> ItemTree { - self.top_level = item_owner.items().flat_map(|item| self.lower_mod_item(&item)).collect(); + self.top_level = item_owner.items().filter_map(|item| self.lower_mod_item(&item)).collect(); self.tree.vis.arena = self.visibilities.into_iter().collect(); self.tree.top_level = self.top_level.into_boxed_slice(); self.tree @@ -89,7 +84,7 @@ impl<'db> Ctx<'db> { _ => None, } }) - .flat_map(|item| self.lower_mod_item(&item)) + .filter_map(|item| self.lower_mod_item(&item)) .collect(); if let Some(ast::Expr::MacroExpr(tail_macro)) = stmts.expr() @@ -245,7 +240,9 @@ impl<'db> Ctx<'db> { ModKind::Inline { items: module .item_list() - .map(|list| list.items().flat_map(|item| self.lower_mod_item(&item)).collect()) + .map(|list| { + list.items().filter_map(|item| self.lower_mod_item(&item)).collect() + }) .unwrap_or_else(|| { cov_mark::hit!(name_res_works_for_broken_modules); Box::new([]) as Box<[_]> |