mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 12:29:21 +00:00
Auto merge of #15070 - Veykril:analysis-stat-stuff, r=Veykril
internal: Report metric timings for file item trees and crate def map creation
This commit is contained in:
commit
bc26e81cd5
7 changed files with 67 additions and 16 deletions
|
@ -60,7 +60,7 @@ mod tests;
|
|||
use std::{cmp::Ord, ops::Deref};
|
||||
|
||||
use base_db::{CrateId, Edition, FileId, ProcMacroKind};
|
||||
use hir_expand::{name::Name, InFile, MacroCallId, MacroDefId};
|
||||
use hir_expand::{name::Name, HirFileId, InFile, MacroCallId, MacroDefId};
|
||||
use itertools::Itertools;
|
||||
use la_arena::Arena;
|
||||
use profile::Count;
|
||||
|
@ -626,6 +626,17 @@ impl ModuleData {
|
|||
self.origin.definition_source(db)
|
||||
}
|
||||
|
||||
/// Same as [`definition_source`] but only returns the file id to prevent parsing the ASt.
|
||||
pub fn definition_source_file_id(&self) -> HirFileId {
|
||||
match self.origin {
|
||||
ModuleOrigin::File { definition, .. } | ModuleOrigin::CrateRoot { definition } => {
|
||||
definition.into()
|
||||
}
|
||||
ModuleOrigin::Inline { definition, .. } => definition.file_id,
|
||||
ModuleOrigin::BlockExpr { block } => block.file_id,
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns a node which declares this module, either a `mod foo;` or a `mod foo {}`.
|
||||
/// `None` for the crate root or block.
|
||||
pub fn declaration_source(&self, db: &dyn DefDatabase) -> Option<InFile<ast::Module>> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue