use std::sync::Arc; use ra_syntax::{ SyntaxNode, TreeArc, }; use crate::{ SourceFileItems, SourceItemId, HirFileId, PersistentHirDatabase, }; pub(super) fn file_items( db: &impl PersistentHirDatabase, file_id: HirFileId, ) -> Arc { let source_file = db.hir_parse(file_id); let res = SourceFileItems::new(file_id, &source_file); Arc::new(res) } pub(super) fn file_item( db: &impl PersistentHirDatabase, source_item_id: SourceItemId, ) -> TreeArc { let source_file = db.hir_parse(source_item_id.file_id); db.file_items(source_item_id.file_id)[source_item_id.item_id] .to_node(&source_file) .to_owned() }