mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-27 05:23:24 +00:00
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 <jonasschievink@gmail.com>
This commit is contained in:
commit
4235a4a131
2 changed files with 12 additions and 0 deletions
|
@ -154,6 +154,10 @@ impl TraitData {
|
||||||
let tr_loc = tr.lookup(db);
|
let tr_loc = tr.lookup(db);
|
||||||
let item_tree = tr_loc.id.item_tree(db);
|
let item_tree = tr_loc.id.item_tree(db);
|
||||||
let tr_def = &item_tree[tr_loc.id.value];
|
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 name = tr_def.name.clone();
|
||||||
let is_auto = tr_def.is_auto;
|
let is_auto = tr_def.is_auto;
|
||||||
let is_unsafe = tr_def.is_unsafe;
|
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 ast_id_map = db.ast_id_map(tree_id.file_id());
|
||||||
let root = db.parse_or_expand(tree_id.file_id()).unwrap();
|
let root = db.parse_or_expand(tree_id.file_id()).unwrap();
|
||||||
let call = ast_id_map.get(call.ast_id).to_node(&root);
|
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);
|
let res = expander.enter_expand(db, call);
|
||||||
|
|
||||||
if let Ok(res) = res {
|
if let Ok(res) = res {
|
||||||
|
|
|
@ -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>> {
|
pub(crate) fn impl_trait_query(db: &dyn HirDatabase, impl_id: ImplId) -> Option<Binders<TraitRef>> {
|
||||||
let impl_data = db.impl_data(impl_id);
|
let impl_data = db.impl_data(impl_id);
|
||||||
let resolver = impl_id.resolver(db.upcast());
|
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 =
|
let ctx =
|
||||||
TyLoweringContext::new(db, &resolver).with_type_param_mode(TypeParamLoweringMode::Variable);
|
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();
|
let (self_ty, binders) = db.impl_self_ty(impl_id).into_value_and_skipped_binders();
|
||||||
|
|
Loading…
Reference in a new issue