mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-02 22:54:58 +00:00
29 lines
699 B
Rust
29 lines
699 B
Rust
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<SourceFileItems> {
|
|
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<SyntaxNode> {
|
|
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()
|
|
}
|