rustc: Panic by default in DefIdTree::parent
Only crate root def-ids don't have a parent, and in majority of cases the argument of `DefIdTree::parent` cannot be a crate root. So we now panic by default in `parent` and introduce a new non-panicing function `opt_parent` for cases where the argument can be a crate root. Same applies to `local_parent`/`opt_local_parent`.
This commit is contained in:
@@ -332,9 +332,9 @@ impl<'tcx> Visitor<'tcx> for IrMaps<'tcx> {
|
||||
let def_id = local_def_id.to_def_id();
|
||||
|
||||
// Don't run unused pass for #[derive()]
|
||||
if let Some(parent) = self.tcx.parent(def_id)
|
||||
&& let DefKind::Impl = self.tcx.def_kind(parent.expect_local())
|
||||
&& self.tcx.has_attr(parent, sym::automatically_derived)
|
||||
let parent = self.tcx.local_parent(local_def_id);
|
||||
if let DefKind::Impl = self.tcx.def_kind(parent)
|
||||
&& self.tcx.has_attr(parent.to_def_id(), sym::automatically_derived)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user