From 0c79e1d304d2498abfceefec4d5907b187596c6a Mon Sep 17 00:00:00 2001
From: Edwin Cheng <edwin0cheng@gmail.com>
Date: Thu, 5 Mar 2020 03:02:51 +0800
Subject: Add comment for parents logging

---
 crates/ra_hir_expand/src/db.rs | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

(limited to 'crates/ra_hir_expand')

diff --git a/crates/ra_hir_expand/src/db.rs b/crates/ra_hir_expand/src/db.rs
index 73137f33b..f3a84cacc 100644
--- a/crates/ra_hir_expand/src/db.rs
+++ b/crates/ra_hir_expand/src/db.rs
@@ -176,16 +176,21 @@ pub(crate) fn parse_macro(
                 MacroCallId::LazyMacro(id) => {
                     let loc: MacroCallLoc = db.lookup_intern_macro(id);
                     let node = loc.kind.node(db);
+
+                    // collect parent information for warning log
+                    let parents = std::iter::successors(loc.kind.file_id().call_node(db), |it| {
+                        it.file_id.call_node(db)
+                    })
+                    .map(|n| format!("{:#}", n.value))
+                    .collect::<Vec<_>>()
+                    .join("\n");
+
                     log::warn!(
-                        "fail on macro_parse: (reason: {} macro_call: {:#})",
+                        "fail on macro_parse: (reason: {} macro_call: {:#}) parents: {}",
                         err,
-                        node.value
+                        node.value,
+                        parents
                     );
-                    let mut parent = loc.kind.file_id().call_node(db);
-                    while let Some(node) = parent.clone() {
-                        log::warn!("parent: macro_call: {:#})", node.value);
-                        parent = node.file_id.call_node(db);
-                    }
                 }
                 _ => {
                     log::warn!("fail on macro_parse: (reason: {})", err);
-- 
cgit v1.2.3