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:
parent
a933de8398
commit
5b5964f569
50 changed files with 162 additions and 176 deletions
|
@ -1471,7 +1471,7 @@ impl InvalidAtomicOrdering {
|
|||
&& let Some(adt) = cx.tcx.type_of(impl_did).ty_adt_def()
|
||||
// skip extension traits, only lint functions from the standard library
|
||||
&& cx.tcx.trait_id_of_impl(impl_did).is_none()
|
||||
&& let Some(parent) = cx.tcx.parent(adt.did())
|
||||
&& let parent = cx.tcx.parent(adt.did())
|
||||
&& cx.tcx.is_diagnostic_item(sym::atomic_mod, parent)
|
||||
&& ATOMIC_TYPES.contains(&cx.tcx.item_name(adt.did()))
|
||||
{
|
||||
|
@ -1486,9 +1486,9 @@ impl InvalidAtomicOrdering {
|
|||
orderings.iter().any(|ordering| {
|
||||
tcx.item_name(did) == *ordering && {
|
||||
let parent = tcx.parent(did);
|
||||
parent == atomic_ordering
|
||||
Some(parent) == atomic_ordering
|
||||
// needed in case this is a ctor, not a variant
|
||||
|| parent.map_or(false, |parent| tcx.parent(parent) == atomic_ordering)
|
||||
|| tcx.opt_parent(parent) == atomic_ordering
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue