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.rs9
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);