aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_def/src/body/lower.rs
diff options
context:
space:
mode:
authorJonas Schievink <[email protected]>2020-12-02 13:23:51 +0000
committerJonas Schievink <[email protected]>2020-12-02 13:23:51 +0000
commit319fcd01ac768c05f24c1d3d306ab68632c8de3e (patch)
treeb3a483fadbe0547b8af5a34e9f13bd7d817b3956 /crates/hir_def/src/body/lower.rs
parentbb697727a2e43d734a1bf3aae7644a9249aee11e (diff)
Attach macro expansion errors to the right file
Diffstat (limited to 'crates/hir_def/src/body/lower.rs')
-rw-r--r--crates/hir_def/src/body/lower.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/crates/hir_def/src/body/lower.rs b/crates/hir_def/src/body/lower.rs
index 2c41c0005..689a3274c 100644
--- a/crates/hir_def/src/body/lower.rs
+++ b/crates/hir_def/src/body/lower.rs
@@ -560,6 +560,9 @@ impl ExprCollector<'_> {
560 // FIXME: do we still need to allocate this as missing ? 560 // FIXME: do we still need to allocate this as missing ?
561 self.alloc_expr(Expr::Missing, syntax_ptr) 561 self.alloc_expr(Expr::Missing, syntax_ptr)
562 } else { 562 } else {
563 // File containing the macro call. Expansion errors will be attached here.
564 let outer_file = self.expander.current_file_id;
565
563 let macro_call = self.expander.to_source(AstPtr::new(&e)); 566 let macro_call = self.expander.to_source(AstPtr::new(&e));
564 let res = self.expander.enter_expand(self.db, Some(&self.body.item_scope), e); 567 let res = self.expander.enter_expand(self.db, Some(&self.body.item_scope), e);
565 568
@@ -567,7 +570,7 @@ impl ExprCollector<'_> {
567 Some(ExpandError::UnresolvedProcMacro) => { 570 Some(ExpandError::UnresolvedProcMacro) => {
568 self.source_map.diagnostics.push(BodyDiagnostic::UnresolvedProcMacro( 571 self.source_map.diagnostics.push(BodyDiagnostic::UnresolvedProcMacro(
569 UnresolvedProcMacro { 572 UnresolvedProcMacro {
570 file: self.expander.current_file_id, 573 file: outer_file,
571 node: syntax_ptr.clone().into(), 574 node: syntax_ptr.clone().into(),
572 precise_location: None, 575 precise_location: None,
573 macro_name: None, 576 macro_name: None,
@@ -577,7 +580,7 @@ impl ExprCollector<'_> {
577 Some(err) => { 580 Some(err) => {
578 self.source_map.diagnostics.push(BodyDiagnostic::MacroError( 581 self.source_map.diagnostics.push(BodyDiagnostic::MacroError(
579 MacroError { 582 MacroError {
580 file: self.expander.current_file_id, 583 file: outer_file,
581 node: syntax_ptr.clone().into(), 584 node: syntax_ptr.clone().into(),
582 message: err.to_string(), 585 message: err.to_string(),
583 }, 586 },