Make more precise range macro upmapping

This commit is contained in:
Lukas Wirth 2022-01-31 13:56:14 +01:00
parent 5fd3688018
commit 45ff51ba22
8 changed files with 81 additions and 81 deletions

View file

@ -39,24 +39,24 @@ impl DeclarationLocation {
}
pub fn original_range(&self, db: &dyn HirDatabase) -> Option<FileRange> {
find_original_file_range(db, self.hir_file_id, &self.ptr)
let node = resolve_node(db, self.hir_file_id, &self.ptr)?;
Some(node.as_ref().original_file_range(db.upcast()))
}
pub fn original_name_range(&self, db: &dyn HirDatabase) -> Option<FileRange> {
find_original_file_range(db, self.hir_file_id, &self.name_ptr)
let node = resolve_node(db, self.hir_file_id, &self.name_ptr)?;
node.as_ref().original_file_range_opt(db.upcast())
}
}
fn find_original_file_range(
fn resolve_node(
db: &dyn HirDatabase,
file_id: HirFileId,
ptr: &SyntaxNodePtr,
) -> Option<FileRange> {
) -> Option<InFile<SyntaxNode>> {
let root = db.parse_or_expand(file_id)?;
let node = ptr.to_node(&root);
let node = InFile::new(file_id, &node);
Some(node.original_file_range(db.upcast()))
Some(InFile::new(file_id, node))
}
#[derive(PartialEq, Eq, Hash, Clone, Copy, Debug)]