mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-28 21:05:02 +00:00
Add Semantics::original_ast_node for upmapping nodes out of macro files
This commit is contained in:
parent
b9fa37f5b4
commit
96db0d8bdd
14 changed files with 182 additions and 48 deletions
|
@ -208,6 +208,10 @@ impl<'db, DB: HirDatabase> Semantics<'db, DB> {
|
|||
self.imp.original_range_opt(node)
|
||||
}
|
||||
|
||||
pub fn original_ast_node<N: AstNode>(&self, node: N) -> Option<N> {
|
||||
self.imp.original_ast_node(node)
|
||||
}
|
||||
|
||||
pub fn diagnostics_display_range(&self, diagnostics: InFile<SyntaxNodePtr>) -> FileRange {
|
||||
self.imp.diagnostics_display_range(diagnostics)
|
||||
}
|
||||
|
@ -660,6 +664,11 @@ impl<'db> SemanticsImpl<'db> {
|
|||
node.as_ref().original_file_range_opt(self.db.upcast())
|
||||
}
|
||||
|
||||
fn original_ast_node<N: AstNode>(&self, node: N) -> Option<N> {
|
||||
let file = self.find_file(node.syntax().clone());
|
||||
file.with_value(node).original_ast_node(self.db.upcast()).map(|it| it.value)
|
||||
}
|
||||
|
||||
fn diagnostics_display_range(&self, src: InFile<SyntaxNodePtr>) -> FileRange {
|
||||
let root = self.db.parse_or_expand(src.file_id).unwrap();
|
||||
let node = src.value.to_node(&root);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue