diff options
Diffstat (limited to 'crates/ra_hir/src/semantics.rs')
-rw-r--r-- | crates/ra_hir/src/semantics.rs | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/crates/ra_hir/src/semantics.rs b/crates/ra_hir/src/semantics.rs index 872f5fa4c..36b688ccb 100644 --- a/crates/ra_hir/src/semantics.rs +++ b/crates/ra_hir/src/semantics.rs | |||
@@ -8,7 +8,7 @@ use hir_def::{ | |||
8 | resolver::{self, HasResolver, Resolver}, | 8 | resolver::{self, HasResolver, Resolver}, |
9 | AsMacroCall, FunctionId, TraitId, VariantId, | 9 | AsMacroCall, FunctionId, TraitId, VariantId, |
10 | }; | 10 | }; |
11 | use hir_expand::{diagnostics::AstDiagnostic, hygiene::Hygiene, name::AsName, ExpansionInfo}; | 11 | use hir_expand::{hygiene::Hygiene, name::AsName, ExpansionInfo}; |
12 | use hir_ty::associated_type_shorthand_candidates; | 12 | use hir_ty::associated_type_shorthand_candidates; |
13 | use itertools::Itertools; | 13 | use itertools::Itertools; |
14 | use ra_db::{FileId, FileRange}; | 14 | use ra_db::{FileId, FileRange}; |
@@ -110,13 +110,6 @@ impl<'db, DB: HirDatabase> Semantics<'db, DB> { | |||
110 | self.imp.parse(file_id) | 110 | self.imp.parse(file_id) |
111 | } | 111 | } |
112 | 112 | ||
113 | pub fn ast<T: AstDiagnostic + Diagnostic>(&self, d: &T) -> <T as AstDiagnostic>::AST { | ||
114 | let file_id = d.source().file_id; | ||
115 | let root = self.db.parse_or_expand(file_id).unwrap(); | ||
116 | self.imp.cache(root, file_id); | ||
117 | d.ast(self.db.upcast()) | ||
118 | } | ||
119 | |||
120 | pub fn expand(&self, macro_call: &ast::MacroCall) -> Option<SyntaxNode> { | 113 | pub fn expand(&self, macro_call: &ast::MacroCall) -> Option<SyntaxNode> { |
121 | self.imp.expand(macro_call) | 114 | self.imp.expand(macro_call) |
122 | } | 115 | } |
@@ -146,8 +139,8 @@ impl<'db, DB: HirDatabase> Semantics<'db, DB> { | |||
146 | self.imp.original_range(node) | 139 | self.imp.original_range(node) |
147 | } | 140 | } |
148 | 141 | ||
149 | pub fn diagnostics_range(&self, diagnostics: &dyn Diagnostic) -> FileRange { | 142 | pub fn diagnostics_display_range(&self, diagnostics: &dyn Diagnostic) -> FileRange { |
150 | self.imp.diagnostics_range(diagnostics) | 143 | self.imp.diagnostics_display_range(diagnostics) |
151 | } | 144 | } |
152 | 145 | ||
153 | pub fn ancestors_with_macros(&self, node: SyntaxNode) -> impl Iterator<Item = SyntaxNode> + '_ { | 146 | pub fn ancestors_with_macros(&self, node: SyntaxNode) -> impl Iterator<Item = SyntaxNode> + '_ { |
@@ -389,10 +382,11 @@ impl<'db> SemanticsImpl<'db> { | |||
389 | original_range(self.db, node.as_ref()) | 382 | original_range(self.db, node.as_ref()) |
390 | } | 383 | } |
391 | 384 | ||
392 | fn diagnostics_range(&self, diagnostics: &dyn Diagnostic) -> FileRange { | 385 | fn diagnostics_display_range(&self, diagnostics: &dyn Diagnostic) -> FileRange { |
393 | let src = diagnostics.source(); | 386 | let src = diagnostics.display_source(); |
394 | let root = self.db.parse_or_expand(src.file_id).unwrap(); | 387 | let root = self.db.parse_or_expand(src.file_id).unwrap(); |
395 | let node = src.value.to_node(&root); | 388 | let node = src.value.to_node(&root); |
389 | self.cache(root, src.file_id); | ||
396 | original_range(self.db, src.with_value(&node)) | 390 | original_range(self.db, src.with_value(&node)) |
397 | } | 391 | } |
398 | 392 | ||