diff options
Diffstat (limited to 'crates/ra_hir_def/src')
-rw-r--r-- | crates/ra_hir_def/src/body.rs | 4 | ||||
-rw-r--r-- | crates/ra_hir_def/src/body/lower.rs | 3 | ||||
-rw-r--r-- | crates/ra_hir_def/src/diagnostics.rs | 6 | ||||
-rw-r--r-- | crates/ra_hir_def/src/nameres.rs | 3 |
4 files changed, 11 insertions, 5 deletions
diff --git a/crates/ra_hir_def/src/body.rs b/crates/ra_hir_def/src/body.rs index eafaf48c1..3b169440a 100644 --- a/crates/ra_hir_def/src/body.rs +++ b/crates/ra_hir_def/src/body.rs | |||
@@ -210,7 +210,7 @@ pub struct BodySourceMap { | |||
210 | expr_map_back: ArenaMap<ExprId, Result<ExprSource, SyntheticSyntax>>, | 210 | expr_map_back: ArenaMap<ExprId, Result<ExprSource, SyntheticSyntax>>, |
211 | pat_map: FxHashMap<PatSource, PatId>, | 211 | pat_map: FxHashMap<PatSource, PatId>, |
212 | pat_map_back: ArenaMap<PatId, Result<PatSource, SyntheticSyntax>>, | 212 | pat_map_back: ArenaMap<PatId, Result<PatSource, SyntheticSyntax>>, |
213 | field_map: FxHashMap<(ExprId, usize), AstPtr<ast::RecordField>>, | 213 | field_map: FxHashMap<(ExprId, usize), InFile<AstPtr<ast::RecordField>>>, |
214 | expansions: FxHashMap<InFile<AstPtr<ast::MacroCall>>, HirFileId>, | 214 | expansions: FxHashMap<InFile<AstPtr<ast::MacroCall>>, HirFileId>, |
215 | } | 215 | } |
216 | 216 | ||
@@ -303,7 +303,7 @@ impl BodySourceMap { | |||
303 | self.pat_map.get(&src).cloned() | 303 | self.pat_map.get(&src).cloned() |
304 | } | 304 | } |
305 | 305 | ||
306 | pub fn field_syntax(&self, expr: ExprId, field: usize) -> AstPtr<ast::RecordField> { | 306 | pub fn field_syntax(&self, expr: ExprId, field: usize) -> InFile<AstPtr<ast::RecordField>> { |
307 | self.field_map[&(expr, field)].clone() | 307 | self.field_map[&(expr, field)].clone() |
308 | } | 308 | } |
309 | } | 309 | } |
diff --git a/crates/ra_hir_def/src/body/lower.rs b/crates/ra_hir_def/src/body/lower.rs index 79abe55ce..10a1ba714 100644 --- a/crates/ra_hir_def/src/body/lower.rs +++ b/crates/ra_hir_def/src/body/lower.rs | |||
@@ -320,7 +320,8 @@ impl ExprCollector<'_> { | |||
320 | 320 | ||
321 | let res = self.alloc_expr(record_lit, syntax_ptr); | 321 | let res = self.alloc_expr(record_lit, syntax_ptr); |
322 | for (i, ptr) in field_ptrs.into_iter().enumerate() { | 322 | for (i, ptr) in field_ptrs.into_iter().enumerate() { |
323 | self.source_map.field_map.insert((res, i), ptr); | 323 | let src = self.expander.to_source(ptr); |
324 | self.source_map.field_map.insert((res, i), src); | ||
324 | } | 325 | } |
325 | res | 326 | res |
326 | } | 327 | } |
diff --git a/crates/ra_hir_def/src/diagnostics.rs b/crates/ra_hir_def/src/diagnostics.rs index cfa0f2f76..dbaf4deef 100644 --- a/crates/ra_hir_def/src/diagnostics.rs +++ b/crates/ra_hir_def/src/diagnostics.rs | |||
@@ -4,7 +4,7 @@ use std::any::Any; | |||
4 | 4 | ||
5 | use hir_expand::diagnostics::Diagnostic; | 5 | use hir_expand::diagnostics::Diagnostic; |
6 | use ra_db::RelativePathBuf; | 6 | use ra_db::RelativePathBuf; |
7 | use ra_syntax::{ast, AstPtr, SyntaxNodePtr}; | 7 | use ra_syntax::{ast, AstPtr, SyntaxNodePtr, TextRange}; |
8 | 8 | ||
9 | use hir_expand::{HirFileId, InFile}; | 9 | use hir_expand::{HirFileId, InFile}; |
10 | 10 | ||
@@ -12,6 +12,7 @@ use hir_expand::{HirFileId, InFile}; | |||
12 | pub struct UnresolvedModule { | 12 | pub struct UnresolvedModule { |
13 | pub file: HirFileId, | 13 | pub file: HirFileId, |
14 | pub decl: AstPtr<ast::Module>, | 14 | pub decl: AstPtr<ast::Module>, |
15 | pub highlight_range: TextRange, | ||
15 | pub candidate: RelativePathBuf, | 16 | pub candidate: RelativePathBuf, |
16 | } | 17 | } |
17 | 18 | ||
@@ -19,6 +20,9 @@ impl Diagnostic for UnresolvedModule { | |||
19 | fn message(&self) -> String { | 20 | fn message(&self) -> String { |
20 | "unresolved module".to_string() | 21 | "unresolved module".to_string() |
21 | } | 22 | } |
23 | fn highlight_range(&self) -> TextRange { | ||
24 | self.highlight_range | ||
25 | } | ||
22 | fn source(&self) -> InFile<SyntaxNodePtr> { | 26 | fn source(&self) -> InFile<SyntaxNodePtr> { |
23 | InFile { file_id: self.file, value: self.decl.clone().into() } | 27 | InFile { file_id: self.file, value: self.decl.clone().into() } |
24 | } | 28 | } |
diff --git a/crates/ra_hir_def/src/nameres.rs b/crates/ra_hir_def/src/nameres.rs index f279c2ad4..4a5a93dad 100644 --- a/crates/ra_hir_def/src/nameres.rs +++ b/crates/ra_hir_def/src/nameres.rs | |||
@@ -297,7 +297,7 @@ pub enum ModuleSource { | |||
297 | mod diagnostics { | 297 | mod diagnostics { |
298 | use hir_expand::diagnostics::DiagnosticSink; | 298 | use hir_expand::diagnostics::DiagnosticSink; |
299 | use ra_db::RelativePathBuf; | 299 | use ra_db::RelativePathBuf; |
300 | use ra_syntax::{ast, AstPtr}; | 300 | use ra_syntax::{ast, AstNode, AstPtr}; |
301 | 301 | ||
302 | use crate::{db::DefDatabase, diagnostics::UnresolvedModule, nameres::LocalModuleId, AstId}; | 302 | use crate::{db::DefDatabase, diagnostics::UnresolvedModule, nameres::LocalModuleId, AstId}; |
303 | 303 | ||
@@ -326,6 +326,7 @@ mod diagnostics { | |||
326 | sink.push(UnresolvedModule { | 326 | sink.push(UnresolvedModule { |
327 | file: declaration.file_id, | 327 | file: declaration.file_id, |
328 | decl: AstPtr::new(&decl), | 328 | decl: AstPtr::new(&decl), |
329 | highlight_range: decl.syntax().text_range(), | ||
329 | candidate: candidate.clone(), | 330 | candidate: candidate.clone(), |
330 | }) | 331 | }) |
331 | } | 332 | } |