Unnamed repository; edit this file 'description' to name the repository.
Merge #10159
10159: Add panic info for `impl_trait`/`trait_data` r=jonas-schievink a=jonas-schievink To debug https://github.com/rust-analyzer/rust-analyzer/issues/10084 further bors r+ Co-authored-by: Jonas Schievink <[email protected]>
bors[bot] 2021-09-06
parent 487078f · parent 7d67c71 · commit 4235a4a
-rw-r--r--crates/hir_def/src/data.rs8
-rw-r--r--crates/hir_ty/src/lower.rs4
2 files changed, 12 insertions, 0 deletions
diff --git a/crates/hir_def/src/data.rs b/crates/hir_def/src/data.rs
index c63e9311ab..3a3709f8f8 100644
--- a/crates/hir_def/src/data.rs
+++ b/crates/hir_def/src/data.rs
@@ -154,6 +154,10 @@ impl TraitData {
let tr_loc = tr.lookup(db);
let item_tree = tr_loc.id.item_tree(db);
let tr_def = &item_tree[tr_loc.id.value];
+ let _cx = stdx::panic_context::enter(format!(
+ "trait_data_query({:?} -> {:?} -> {:?})",
+ tr, tr_loc, tr_def
+ ));
let name = tr_def.name.clone();
let is_auto = tr_def.is_auto;
let is_unsafe = tr_def.is_unsafe;
@@ -341,6 +345,10 @@ fn collect_items(
let ast_id_map = db.ast_id_map(tree_id.file_id());
let root = db.parse_or_expand(tree_id.file_id()).unwrap();
let call = ast_id_map.get(call.ast_id).to_node(&root);
+ let _cx = stdx::panic_context::enter(format!(
+ "collect_items MacroCall: {}\nexpander={:#?}",
+ call, expander
+ ));
let res = expander.enter_expand(db, call);
if let Ok(res) = res {
diff --git a/crates/hir_ty/src/lower.rs b/crates/hir_ty/src/lower.rs
index 0e1afe866e..176ae3ad84 100644
--- a/crates/hir_ty/src/lower.rs
+++ b/crates/hir_ty/src/lower.rs
@@ -1450,6 +1450,10 @@ pub(crate) fn impl_self_ty_recover(
pub(crate) fn impl_trait_query(db: &dyn HirDatabase, impl_id: ImplId) -> Option<Binders<TraitRef>> {
let impl_data = db.impl_data(impl_id);
let resolver = impl_id.resolver(db.upcast());
+ let _cx = stdx::panic_context::enter(format!(
+ "impl_trait_query({:?} -> {:?}) resolver={:#?}",
+ impl_id, impl_data, resolver
+ ));
let ctx =
TyLoweringContext::new(db, &resolver).with_type_param_mode(TypeParamLoweringMode::Variable);
let (self_ty, binders) = db.impl_self_ty(impl_id).into_value_and_skipped_binders();