Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/semantics.rs')
| -rw-r--r-- | crates/hir/src/semantics.rs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs index ca23d85cb2..4f481613dd 100644 --- a/crates/hir/src/semantics.rs +++ b/crates/hir/src/semantics.rs @@ -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); |